Computer system testing generally seeks to uncover design and implementation errors by creating processing conditions that attempt to replicate real-world conditions. Oftentimes the time and resources required to adequately test a system are strained because of product delivery commitments. Thus, developing automated test suites with thorough coverage of system functionality is very important.
One system-level function that is usually the object of a system test is input/output (I/O) processing. I/O testing often involves controlling I/O load and profile distributions in order to detect and diagnose timing, combinatorial, or random system problems without sacrificing test coverage or test functionality. Some testing techniques may be too repetitive, too random, or introduce too much overhead to produce certain test conditions.
Previous test efforts have focused on executing discrete functional tests, either individually or in random combinations with the objective of producing system-load conditions that would exacerbate system design failures. The result of these efforts was to produce a system load that either followed a specific set of characteristics or was generally random. Repetitive tests produce only a limited set of test conditions, and random activities sometime require too much time to detect even a limited number of combinatorial errors. Relatively less effort has been expended in developing I/O load distributions that are predictable and varied as a means to induce aberrant system behavior and identify logical design or implementation errors.
A method and apparatus that addresses the aforementioned problems, as well as other related problems, are therefore desirable.